/**
 * 定义 SPU 模块相关的类型
 */

/**
 * 定义全部接口返回数据都拥有的 TS 的类型
 */
export interface responseData {
  code: number
  message: string
  ok: boolean
}

/**
 * 定义 SPU 的数据类型
 */
export interface SpuData {
  id?: number | string
  spuName: string
  description: string
  category3Id: number | string
  tmId: number | string
  spuSaleAttrList: SpuSaleAttr[] | null
  spuImageList: SpuImage[] | null
}

/**
 * 定义 SPU 列表的数据类型
 */
export type Records = SpuData[]

/**
 * 定义 SPU 列表接口返回数据的数据类型
 */
export interface SpuDataResponseData extends responseData {
  data: {
    records: Records
    total: number
    size: number
    current: number
    pages: number
    searchCount: boolean
  }
}

/**
 * 所有品牌数据的 TS 类型
 */
export interface Trademark {
  id?: number
  tmName: string
  logoUrl: string
}

/**
 * 品牌接口返回的数据 TS 类型
 */
export interface ALLTrademark extends responseData {
  data: Trademark[]
}

/**
 * 商品图片的 TS 类型
 */
export interface SpuImage {
  id?: number
  imgName?: string
  imgUrl?: string
  name?: string
  url?: string
  createTime?: string
  updateTime?: string
  spuId?: number | string
}

/**
 * 返回的商品图片列表的 TS 类型
 */
export interface SpuImageList extends responseData {
  data: SpuImage[]
}

/**
 * 获取 SPU 的销售属性的 TS 类型
 */
export interface SpuSaleAttr {
  id?: number
  baseSaleAttrId: number | string
  saleAttrName: string
  createTime?: string
  updateTime?: string
  spuId?: number | string
  spuSaleAttrValueList: SpuSaleAttrValueList
  flag?: boolean | null
  saleAttrValue?: string
}

/**
 * SPU 销售属性值列表的 TS 类型
 */
export type SpuSaleAttrValueList = SpuSaleAttrValue[]

/**
 * SPU 销售属性值的 TS 类型
 */
export interface SpuSaleAttrValue {
  id?: number
  createTime?: string
  updateTime?: string
  spuId?: number | string
  saleAttrName?: string
  baseSaleAttrId: number | string
  saleAttrValueName: string
  isChecked?: string | boolean | null
}

/**
 * 获取 SPU 销售属性列表的 TS 类型
 */
export interface SpuSaleAttrListResponseData extends responseData {
  data: SpuSaleAttr[]
}

/**
 * 全部销售属性的 TS 类型
 */
export interface BaseSaleAttr {
  id: number
  name: string
  createTime?: string
  updateTime?: string
}

/**
 * 返回全部销售属性列表的 TS 类型
 */
export interface BaseSaleAttrListResponseData extends responseData {
  data: BaseSaleAttr[]
}

/**
 * 添加的 SKU 的 TS 类型
 */
export interface skuAttrValue {
  attrId: number | string
  valueId: number | string
}
export interface skuSaleAttrValue {
  saleAttrId: number | string
  saleAttrValueId: number | string
}
export interface SkuData {
  category3Id: number | string
  spuId: number | string
  tmId: number | string
  skuName: string
  price: number | string
  weight: number | string
  skuDesc: string
  skuAttrValueList?: skuAttrValue[]
  skuSaleAttrValueList?: skuSaleAttrValue[]
  skuDefaultImg: string
}

/**
 * 获取 SKU 数据接口返回数据的 TS 类型
 */
export interface SkuDataResponseData extends responseData {
  data: SkuData[]
}
